home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_12_04 / saks / lns1b2.cpp < prev    next >
C/C++ Source or Header  |  1994-02-09  |  1KB  |  65 lines

  1.  
  2. ----------
  3.  
  4. Listing 11 - The Cheshire Cat implementation for lns using a pair of 
  5. pointers
  6.  
  7. //
  8. // lns1b.cpp - line number sequence implementation
  9. //
  10. #include <stdio.h>
  11.  
  12. #include "lns.h"
  13.  
  14. class lns::details
  15.     {
  16. public:
  17.     class node;
  18.     node *first, *last;
  19.     };
  20.  
  21. class lns::details::node
  22.     {
  23. public:
  24.     node(unsigned n);
  25.     unsigned number;
  26.     node *next;
  27.     };
  28.  
  29. inline lns::details::node::node(unsigned n)
  30.     : number(n), next(0)
  31.     {
  32.     }
  33.  
  34. lns::lns(unsigned n)
  35.     {
  36.     dp = new details;
  37.     dp->first = dp->last = new node(n);
  38.     }
  39.  
  40. lns::~lns()
  41.     {
  42.     node *first = dp->first;
  43.     node *p;
  44.     while ((p = first) != 0)
  45.         {
  46.         first = first->next;
  47.         delete p;
  48.         }
  49.     }
  50.  
  51. void lns::add(unsigned n)
  52.     {
  53.     if (dp->last->number != n)
  54.         dp->last = dp->last->next = new node(n);
  55.     }
  56.  
  57. void lns::print()
  58.     {
  59.     node *p;
  60.     for (p = dp->first; p != 0; p = p->next)
  61.         printf("%4d ", p->number);
  62.     }
  63.  
  64.  
  65.